package com.Archive.firstWeek;/*
* 可继承计算器
* ---
* 2020.09.22 创建
* 2020.09.23 完成
* 2020.09.26 修复问题
* ---
* 定义两个计算位，可完成加减乘除和幂运算
* 目前问题：(已经修复)
* 1.无法跳出循环
* 2.即便成功跳出，依然需要输入正确的运算符后才能跳出
*
* */
//引入包
import java.util.Scanner;

public class Calculator {

    public double  y, result; //定义第二运算位 y ，运算结果 result
    public String operator,quit; //定义运算符 operator

    // 两位数四则运算运算模块
    public void Calculation() {
        if ("+".equals(operator)) { //加法运算
            result = result + y;
        } else if ("-".equals(operator)) { //减法运算
            result = result - y;
        } else if ("*".equals(operator)) { //乘法运算
            result = result * y;
        } else if ("/".equals(operator)) { //除法运算
            result = result / y;
        } else if ("^".equals(operator)) { //幂运算
            result = Math.pow(result, y);
        } else if ("#".equals(operator)) { //幂运算
            result = (result + y)/2;}
    }

    //判断运算符是否正确
    boolean ifOperator() {
        if ("+".equals(operator) || "-".equals(operator) || "*".equals(operator) || "/".equals(operator) || "^".equals(operator) || "#".equals(operator)) {
            return true;
        }else return false;
    }

    //运算符错误，重新输入运算符
    String operator() {
        Scanner input = new Scanner(System.in);
        System.out.println("运算符输入错误，请重新输入:(可输入的运算符有 + - * / ^ #)");
        operator = input.nextLine();
        return operator;
    }

    //输入第一个运算位
    void firstInput() {
        Scanner input = new Scanner(System.in);
        System.out.println("请输入第一个数:");
        result = input.nextDouble();
    }

    //输入运算符以及第二个运算位
    void secondInput() {
        Scanner input = new Scanner(System.in);
        System.out.println("请输入运算符：(平均数请输入#)");
        operator = input.nextLine();
        System.out.println("请输入第二个数:");
        y = input.nextDouble();
    }

    void quit() {
        Scanner input = new Scanner(System.in);
        System.out.println("退出运算请输入quit：");
        quit = input.nextLine();
    }
    public static void main(String[] args) {

        Calculator m = new Calculator();                //引用Calculator类
        m.firstInput();                                 //引导进行第一运算位输入

        //建立循环运算
        while (true) {
            if ("quit".equals(m.quit)){             //跳出循环，退出程序
                break;
            }
            m.secondInput();
            while (true) {
                if (m.ifOperator() == true) {           //判断输入运算符是否正确
                    break;                              //如果正确跳出循环，否则再次输入
                } else {
                    m.operator = m.operator();          //引导再次输入运算符
                }
            }

            //正确运算式建立成功，进行运算
            m.Calculation();

            //得出结果
            System.out.println("运算结果为："+m.result);

            //确认是否进入继承运算
            m.quit();
        }
    }
}